#include <iostream>
#include <string>
#include <vector>
#include <sw/redis++/redis++.h>

using namespace std;

void test1(sw::redis::Redis& redis)
{
    redis.flushall();
    redis.lpush("key", "111");
    redis.lpush("key", {"222", "333"});
    vector<string> v = {"555", "666"};
    redis.lpush("key", v.begin(), v.end());

    vector<string> res;
    auto it = back_inserter(res);
    redis.lrange("key", 0, -1, it);
    for(auto& e : res)
    {
        cout << e << endl;
    }
}

void test2(sw::redis::Redis& redis)
{
    redis.flushall();
    redis.rpush("key", "111");
    redis.rpush("key", {"222", "333"});
    vector<string> v = {"555", "666"};
    redis.rpush("key", v.begin(), v.end());

    vector<string> res;
    auto it = back_inserter(res);
    redis.lrange("key", 0, -1, it);
    for(auto& e : res)
    {
        cout << e << endl;
    }
}

void test3(sw::redis::Redis& redis)
{
    redis.flushall();
    redis.rpush("key", {"1", "2", "3", "4"});
    auto it = redis.lpop("key");
    cout << it.value() << endl;
    it = redis.rpop("key");
    cout << it.value() << endl;
}

void test4(sw::redis::Redis& redis)
{
    redis.flushall();
    cout << "等待中..." << endl;
    auto res = redis.blpop("key1");
    if(res)
    {
        cout << res->first << endl;
        cout << res->second << endl;
    }
    else 
    {
        cout << "无效" << endl;
    }
}

void test5(sw::redis::Redis& redis)
{
    redis.flushall();
    redis.rpush("key", {"1", "2", "3", "4", "5", "6"});
    auto res = redis.llen("key");
    cout << res << endl;
}
int main()
{
    sw::redis::Redis redis("tcp://127.0.0.1:6379");
    // test1(redis);
    // test2(redis);
    // test3(redis);
    // test4(redis);
    test5(redis);


    return 0;
}